package sqlnode.impl;

/*
 * @auther 顶风少年
 * @mail dfsn19970313@foxmail.com
 * @date 2020-01-04 18:10
 * @notify 纯文本的sql节点，但是包含 ${} 的
 * @version 1.0
 */

import mapping.DynamicContext;
import sqlnode.SqlNode;
import tokenparser.impl.BindingTokenParser;
import tokenparser.GenericTokenParser;

public class TextSqlNode implements SqlNode {

    private String sqlText;

    public TextSqlNode(String sqlText) {
        this.sqlText = sqlText;
    }

    @Override
    public void apply(DynamicContext context)throws Exception {
        //将 ${}去掉，然后将{}中的参数替换成实际的值
        BindingTokenParser bindingTokenParser = new BindingTokenParser(context);
        GenericTokenParser tokenParser = new GenericTokenParser("${", "}", bindingTokenParser);
        String sql = tokenParser.parse(sqlText);
        //添加到 DynamicContext
        context.appendSql(sql);
    }
}
